草庐IT

TypeScript 运算符

全部标签

C++ 二元运算符的优先顺序

以下参数的测试顺序是什么(在C++中)?if(a||b&&c){}我刚刚在我们的应用程序中看到这段代码,我讨厌它,我想添加一些括号来澄清顺序。但我不想添加括号,直到我知道我将它们添加到正确的位置。编辑:接受的答案和跟进此链接包含更多信息,但并不完全清楚其含义。好像||和&&的优先级相同,在这种情况下,它们是从左到右求值的。http://msdn.microsoft.com/en-us/library/126fe14k.aspx 最佳答案 [http://www.cppreference.com/wiki/operator_prece

c++ - 使用赋值运算符返回 *this

我仔细研究了自己的复制构造函数,它总体上对我来说很有意义。但是,关于做自己的赋值运算符这个话题,我需要有人帮我填空。我几乎不明白你为什么要在所有示例中返回*this,例如下面的示例:Foo&Foo::operator=(constFoo&f){//somelogicreturn*this;}所以如果我有这样的语句:Foof;f.hour=7;Foog;g=f;一旦赋值运算符运行,它就会返回对g对象(*this)的引用。所以现在的问题是,我现在不会有这样一个隐含的声明吗?:g=g(gbeingareference)事情是,以前,设置对一个对象的引用会导致调用复制构造函数。在这种情况下,它

c++ - 仅使用 < 运算符检查整数是否在范围内

我需要编写一些代码来检查给定的整数是否在某个范围内。(范围由一对整数表示。)所以,给定一个范围r定义为std::pair,和一个测试整数n,我想说:if(n>=r.first&&n问题是,我需要使用std::less比较仿函数来执行此操作,这意味着我只能使用小于运算符。我正在尝试想出等效的表达式。我很确定我是正确的,但我并不完全有信心。我想到的表达方式是:(!cmp(n,r.first)&&!cmp(r.second,n))哪里cmp是std::less的实例我做对了吗? 最佳答案 轮询他人并不是验证正确性的最佳方式。:)相反,请考

c++ - 赋值运算符在 C++ 中返回对 *this 的引用

我从“Effectivec++”中了解到这一点,这是第10列。它说这是让赋值运算符返回对*this的引用的好方法。我写了一个代码片段来测试这个想法。我在这里覆盖了赋值运算符。并对其进行了测试。一切都好。但是当我删除那个操作符覆盖时,一切都是一样的。这意味着,链接分配仍然有效。那么,我错过了什么?这是为什么?需要你们的解释,谢谢。#includeusingnamespacestd;classWidget{public:Widget&operator=(intrhs){return*this;}intvalue;};intmain(){Widgetmywidget;mywidget.val

C++:std::istream 检查 EOF 而不读取/消耗 token /使用运算符>>

我想测试std::istream是否已经到达结尾而不读取它。我知道我可以像这样检查EOF:if(is>>something)但这有一系列的问题。想象有许多(可能是虚拟的)方法/函数期望std::istream&作为参数传递。这意味着我必须做一些检查EOF的“家务”,可能使用不同类型的something变量,或者创建一些奇怪的包装器来处理调用输入法的情况.我需要做的就是:if(!IsEof(is))Input(is);IsEof方法应保证流不会因读取而改变,因此上面的行等同于:Input(is)关于在Input方法中读取的数据。如果没有通用的解决方案来表示和std::istream,有没

表达式中的 C++ 运算符重载

我确定这已经在某个地方得到了回答,但我不知道要搜索什么。我有以下情况。我创建了一个Vector类并重载了“*”(乘以escalar)和“+”运算符(添加两个vector)。现在,以下代码行:Vectorsum=(e_x*u_c)+(e_y*u_r);这给了我以下错误:error:nomatchfor'operator+'in'((Teste*)this)->Teste::e_x.Vector::operator*(u_c)+((Teste*)this)->Teste::e_y.Vector::operator*(u_r)'但是,如果我将此错误行替换为:Vectoraux=(e_x*u_

c++ - 运算符<<重载

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Operatoroverloading我没有找到任何可以帮助我解决这个问题的东西......我正在尝试过载,这是我的代码:ostream&Complex::operator这是H文件中的声明:ostream&operator我得到这个错误:error:std::ostream&Complex::operator我做错了什么以及为什么做错了?谢谢

C++ 运算符 < 重载

我对WordEntry.h:classWordEntry{public:WordEntry(stringword);~WordEntry();booloperatorWordEntry.cpp(我删除了构造函数和析构函数):stringWordEntry::getWord(){return_word;}boolWordEntry::operator当我像这样在main.cpp中使用它时,一切都很好:WordEntryw1("Der");WordEntryw2("das");if(w1.operatorw2";}else{coutw1";}但是当我在带有WordEntry对象的vecto

c++ - c++中字符串类对象的+运算符和附加函数之间的区别?

假设我们可以添加两个字符串类对象stringstr1="hello"stringstr2="world"stringfinal=str1+str2;或stringf=str1.append(str2);这两种方法有什么区别??他们添加或实现或其他任何东西的顺序?? 最佳答案 operator+会将两个字符串相加并生成一个新的字符串。append将采用一个字符串并将其连接到字符串的末尾。#include#includeusingnamespacestd;intmain(){stringstr="Writing";stringstr2=

c++ - C/C++ 中的运算符优先级和关联性

请注意,这与OperatorPrecedence..()and++无关,Undefinedbehaviorandsequencepoints,Whyaretheseconstructs(using++)undefinedbehavior?以及这里的数百个类似问题不久:关联性是否由标准保证?详细示例:来自Wikipedia关于运算符优先级的文章,operator*和operator/具有相同的优先级,它们是从左到右运算符。这是否意味着,标准保证,即:intres=x/y*z/t;将被评估为intres=((x/y)*z)/t;或者它是实现定义的?如果有保证,你能报价吗?出于好奇,我总是在